# 初始化
import time
card = {}

# 输出开始提示
print('CMR售票机v0.1.1')
print('使用“help(hp)”来查看命令表。访问https://gitee.com/marstomato/cmr-ticket-vening-machine来获取重要的错误修复和更新！”')

# API部分

#help帮助函数实现
def cmrteckethelp():
    print('以下是命令：')
    print('help(hp):帮助')
    print('tacket add(ta):买票')
    print('tacket sts(sts):价格购票')
    print('card add(ca):新建卡')
    print('card moneyset(cmt):充值')
    print('注意：此处的命令可能与实际情况有所不同。')

# 买票函数实现
def cmrtecket_add(station_name1,station_name2):
    # 键入起始站、终点站票价
    try:   
        station_name1 = int(input("输入起始站付费区编号"))
        station_name2 = int(input("输入终点站付费区编号"))
    
    # 错误时报错
    except:
        print("操作失败：用户输入了不正确的整数")
        
    # 确认后用大数减去小数得出票价
    bool_a = input(f"起始站编号{station_name1}、终点站编号{station_name2}。键入N开始出票，否则键入B退出")    
    if bool_a == "N":
        print("正在计算票价")
        if station_name1 > station_name2:
            tacket_money = station_name1 - station_name2
        else:
            tacket_money = station_name2 - station_name1
        
        # 出票
        print(f"票价计算完成。一共{tacket_money}元。正在出票")
        time.sleep(3.7)
        print('出票成功！')
def cmrtacket_sts_add(tacket_money):
    tacket_money = input('输入价格......')
    print(f"价格为{tacket_money}元。键入N开始出票，否则键入B回到上一步。")
    if bool_a == "N":
        print("正在出票")
        time.sleep(3.7)
        print('出票成功！')
    else:
        print(f"操作失败：用户中断或输入了错误的选项：键入了{bool_a}")


# 功能部分
while True:  
    # 初始化
    code = 0
    # 提示键入符号并input用户输入的命令
    code = input(">>")
    
    # help功能实现
    if code == 'help' or code == 'hp':
        print('以下是命令：')
        print('help(hp):帮助')
        print('tacket add(ta):买票')
        print('tacket sts(sts):价格购票')
        print('card add(ca):新建卡')
        print('card moneyset(cmt):充值')
    
    # 买票功能实现
    elif code == 'tacket add' or code == 'ta':
        
        # 键入起始站、终点站票价
        try:   
            station_name1 = int(input("输入起始站付费区编号"))
            station_name2 = int(input("输入终点站付费区编号"))
    
        # 错误时报错
        except:
            print("操作失败：用户输入了不正确的整数")
        
        # 确认后用大数减去小数得出票价
        bool_a = input(f"起始站编号{station_name1}、终点站编号{station_name2}。键入N开始出票，否则键入B退出")    
        if bool_a == "N":
            print("正在计算票价")
            if station_name1 > station_name2:
                tacket_money = station_name1 - station_name2
            else:
                tacket_money = station_name2 - station_name1
        
        # 出票
        print(f"票价计算完成。一共{tacket_money}元。正在出票")
        time.sleep(3.7)
        print('出票成功！')
    
    # 价格买票功能实现
    elif code == 'tacket sts' or code == 'sts':
        tacket_money = input('输入价格......')
        bool_a = input(f"价格为{tacket_money}元。键入N开始出票，否则键入B退出。")
        if bool_a == "N":
            print("正在出票")
            time.sleep(3.7)
            print('出票成功！')
        else:
            if bool_a == 'N':
                print("操作失败：用户中断")
            else:
                print(f"操作失败：输入了不正确的字符{bool_a}")
    
    # 用户手动退出解决方案
    elif code == 'exit' or code == 'b':
        print('程序崩溃：用户手动崩溃(3)')
        break

    # 买卡解决方案
    elif code == 'card add' or code == 'ca':
        # 键入卡号和充值价格
        card_number = int(input('输入卡号......'))
        card_money = int(input('输入充值价格......'))

        # 组成键值对添加至card字典
        card.setdefault(card_number,card_money)
        print(f'卡已新建。当前的卡列表:{card}')
    
    # 卡充值方案
    elif code == 'card moneyset' or 'cmt':
        # 输出卡列表
        print(f'当前的卡列表:{card} 键入卡号来访问任意一个卡')
        card_number = int(input())
        
        # 通过字典的键值对访问卡的余额
        bool_b = input(f'卡余额:{card[card_number]}，键入N开始充值，否则输入B退出')
        # 充值实现
        if bool_b == 'N':
            card_addmoney = input('键入充值金额......')
            card[card_number] += int(card_addmoney)
            print(f'充值成功。当前卡列表：{card}')

    # 指令错误时解决方案
    else:
        print('操作失败：不正确的指令')
        print(f'在Shell输入了不正确的指令{code}')
pass